//package com.jd.platform.hotkey.worker.tool;
//
//import java.util.concurrent.Executors;
//import java.util.concurrent.ScheduledExecutorService;
//import java.util.concurrent.TimeUnit;
//import java.util.concurrent.atomic.AtomicLong;
//
///**
// * 用于解决高并发下System.currentTimeMillis卡顿
// * @author lry
// */
//public class SystemClock {
//
//    private final int period;
//
//    private final AtomicLong now;
//
//    private static final SystemClock INSTANCE = new SystemClock(1);
//
//    private SystemClock(int period) {
//        this.period = period;
//        this.now = new AtomicLong(System.currentTimeMillis());
//        scheduleClockUpdating();
//    }
//
//    private static SystemClock instance() {
//        return INSTANCE;
//    }
//
//    private void scheduleClockUpdating() {
//        ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(runnable -> {
//            Thread thread = new Thread(runnable, "System Clock");
//            thread.setDaemon(true);
//            return thread;
//        });
//        scheduler.scheduleAtFixedRate(() -> now.set(System.currentTimeMillis()), period, period, TimeUnit.MILLISECONDS);
//    }
//
//    private long currentTimeMillis() {
//        return now.get();
//    }
//
//    /**
//     * 用来替换原来的System.currentTimeMillis()
//     */
//    public static long now() {
//        return instance().currentTimeMillis();
//    }
//}